package com.uade.magicCompany.services;

import java.util.ArrayList;
import java.util.List;

import com.uade.magicCompany.dao.DAOAtracciones;
import com.uade.magicCompany.dao.DAOAtraccionesImpl;
import com.uade.magicCompany.dao.DAOEntrada;
import com.uade.magicCompany.dao.DAOEntradasImpl;
import com.uade.magicCompany.dao.DAORapidPass;
import com.uade.magicCompany.dao.DAORapidPassImpl;
import com.uade.magicCompany.dao.DAOUsuarios;
import com.uade.magicCompany.dao.DAOUsuariosImpl;
import com.uade.magicCompany.entities.AtraccionEntity;
import com.uade.magicCompany.entities.EntradaEntity;
import com.uade.magicCompany.entities.RapidPassEntity;
import com.uade.magicCompany.model.Atraccion;
import com.uade.magicCompany.model.Entrada;
import com.uade.magicCompany.model.RapidPass;

public class GestionRapidPassImpl implements GestionRapidpass {

	DAORapidPass daoRapidPass = new DAORapidPassImpl();
	DAOUsuarios daoUsuario = new DAOUsuariosImpl();
	DAOEntrada daoEntrada = new DAOEntradasImpl();
	DAOAtracciones daoAtracciones = new DAOAtraccionesImpl();

	@Override
	public List<RapidPass> busquedaRapidPass(List<Integer> idAtracciones) {
		ArrayList<RapidPassEntity> rapidPassEntities = daoRapidPass
				.buscarRapidPassPorAtracciones(idAtracciones);
		List <RapidPass> rapidPassList = new ArrayList<RapidPass>();
		
		if(null != rapidPassEntities && !rapidPassEntities.isEmpty()){
			for(RapidPassEntity rapidPassEntity: rapidPassEntities){
				rapidPassList.add(rapidPassEntity.getRapidPass());
			}
		}
		return rapidPassList;
	}

	

	@Override
	public List<Atraccion> buscarAtracciones(int idParque) {
		List<AtraccionEntity> atracciones= daoAtracciones.buscarAtraccionesPorParque(new Long (idParque));
		List<Atraccion> atraccionesModelList = new ArrayList<Atraccion>();
		for(AtraccionEntity atraccionesE: atracciones){
			atraccionesModelList.add(atraccionesE.getAtraccion());
		}
		return atraccionesModelList;
	}
	
	@Override
	public List<RapidPass> buscarRapidPassDeEntrada(Long usuarioIdId){

		Entrada entrada = daoEntrada.buscarEntradaPorUsuario(usuarioIdId).getEntrada();
		if(entrada == null){
			return null;
		}
		List<RapidPassEntity> rapidPases= daoRapidPass.buscarRapidPassPorEntrada(entrada.getId());
		List<RapidPass> rapidPasesModelList = new ArrayList<RapidPass>();
		for(RapidPassEntity rapidPassE: rapidPases){
			rapidPasesModelList.add(rapidPassE.getRapidPass());
		}
		return rapidPasesModelList;
	}



	@Override
	public List<RapidPass> confirmarCombinacion(List<Long> rapids,
			Long idUsuario) {
		
		EntradaEntity entradaE = daoEntrada.buscarEntradaPorUsuario(idUsuario);
		List<RapidPass> rapidPassList = new ArrayList<RapidPass>();
		for (Long idRapidPass : rapids){
			RapidPassEntity rapidPassE = daoRapidPass.findById(idRapidPass);
			rapidPassE.setEntrada(entradaE);
			daoRapidPass.update(rapidPassE);
			rapidPassList.add(rapidPassE.getRapidPass());
		}
		return rapidPassList;
	}

}
